package org.example.domain.order.adapter.repository;


import org.example.domain.order.model.entity.DelayCancelOrderEntity;
import org.example.domain.order.model.entity.OrderEntity;
import org.example.domain.shop.model.entity.ProductEntity;
import org.example.domain.transaction.model.entity.RefundCallBackEntity;

import java.math.BigDecimal;

/**
 * @author yinghuashen
 * @version 1.0
 * @description:
 * @date 2025/3/9 21:12
 */

public interface IOrderRepository {

    ProductEntity getProductById(String productId);

    ProductEntity getProductByIdNow(String productId);

    boolean saveOrder(OrderEntity orderEntity);

    boolean checkOrderExists(String orderId);

    void saveDelayCancelOrderMsg(DelayCancelOrderEntity delayCancelOrderEntity);

    int getOrderStatusById(String orderId);

    BigDecimal getOrderPayPriceByOrderId(String orderId);

    boolean closeDelayedOrder(String orderId);

    boolean succeedPayOrder(String orderId);

    boolean refundOrder(RefundCallBackEntity refundCallBackEntity);


}
